import xlrd
import sys
import codecs
import sco_formations

def recupFormation(page):
    """ recupere les infos
    conernant la formation dans le fichier xls
    """
    tab = []
    chaine = ""
    for i in range(7):
        col=page.col_values(i)
        tab.append(col[1])
    for i in range(0,len(tab)):
        if(i == 0):
            chaine = chaine + "<formation acronyme=\""+ str(tab[0]) + "\" "
        if(i == 1):
            chaine = chaine + "type_parcours=\""+ str(int(tab[1])) + "\" "
        if(i == 2):
            chaine = chaine + "titre_officiel=\""+ str(tab[2]) + "\" "
        if(i == 3):
            chaine = chaine + "formation_code=\""+ str(tab[3]) + "\" "
        if(i == 4):
            chaine = chaine + "version=\""+ str(int(tab[4])) + "\" "
        if(i == 5):
            chaine = chaine + "titre=\""+ str(tab[5]) + "\" "
        if(i == 6):
            chaine = chaine + "formation_id=\""+ str(tab[6]) + "\">\n"
    return chaine

def recupUE(page):
    """ recupere les infos
    conernant les ue dans le fichier xls
    """
    chaine = ""
    tab={}
    col=page.col_values(7)
    for i in range(8,11):
        colx = page.col_values(i)
        if (i == 8):
            tab["type"] = colx
        if (i == 9):
            tab["numero"] = colx
        if (i == 10):
            tab["titre"] = colx
    for i in range(1,len(col)):
        if (i < len(col)):
            if (col[i] != col[i-1]):
                var = col[i]
                chaine = chaine + "<ue acronyme=\""+ var +"\" type=\""+ str(int(tab["type"][i])) +"\" numero=\""+ str(int(tab["numero"][i])) +"\" titre=\""+ tab["titre"][i] +"\"> \n"
                chaine2 = recupMatiere(var,col,page)
                chaine = chaine + chaine2 + "</ue>\n"
    return chaine

def recupMatiere(var,col,page):
    """ recupere les infos
    conernant les matieres dans le fichier xls
    """
    chaine = ""
    tab={}
    for i in range(11,13):
        colx = page.col_values(i)
        if (i == 11):
            tab["nom"] = colx
        if (i == 12):
            tab["numero"] = colx
    for i in range(0,len(col)):
        var2 = col[i]
        if (i < len(col)):
            if (var == var2):
                if (tab["nom"][i] != tab["nom"][i-1]):
                    mat = tab["nom"][i]
                    chaine = chaine + "<matiere titre=\""+ mat + "\" numero=\""+ str(int(tab["numero"][i])) +"\">\n"
                    chaine2 = recupModule(mat,tab["nom"],var,page)
                    chaine = chaine + chaine2 +"</matiere>\n"
    return chaine

def recupModule(mat,nom,ue,page):
    """ recupere les infos
    conernant les mofules dans le fichier xls
    """
    chaine = ""
    tab={}
    for i in range(13,22):
        colx = page.col_values(i)
        if (i == 13):
            tab["coef"] = colx
        if (i == 14):
            tab["hCours"] = colx
        if (i == 15):
            tab["hTP"] = colx
        if (i == 16):
            tab["numero"] = colx
        if (i == 17):
            tab["abrev"] = colx
        if (i == 18):
            tab["code"] = colx
        if (i == 19):
            tab["titre"] = colx
        if (i == 20):
            tab["sID"] = colx
        if (i == 21):
            tab["hTD"] = colx
    c = 0
    colUe = page.col_values(7)
    for i in range(0,len(nom)):
        var = nom[i]
        valUe = colUe[i]
        if (i < len(nom)):
            if (var == mat and valUe == ue ):
                abrev = tab["abrev"][i]
                code =  tab["code"][i]
                titre = tab["titre"][i]
                chaine = chaine + "<module coefficient=\""+ str(int(tab["coef"][i])) +"\" heures_cours=\""+ str(int(tab["hCours"][i]))+"\" heures_tp=\""+ str(int(tab["hTP"][i])) +"\" numero=\""+ str(int(tab["numero"][i])) +"\""
                chaine = chaine + " abbrev=\""+ abrev +"\" code=\""+ code +"\" titre=\""+ titre +"\" semestre_id=\""+ str(int(tab["sID"][i])) +"\" heures_td=\""+ str(int(tab["hTD"][i])) +"\"/>\n" 
    return chaine

def formation_import_xls(context,REQUEST,doc):
    """cette fonction lit un fichier xls passe en parametre 
    et le transforme en fichier
    xml compatible avec scodoc
    """
    document = xlrd.open_workbook(filename=u'',file_contents=doc,encoding_override="ISO-8859-15")
    script = "<?xml version=\"1\" encoding=\"ISO-8859-15\"?> \n"
    page = document.sheet_by_index(0)
    for donnes in range(page.nrows):
        page.row_values(donnes)
    chaine = recupFormation(page)
    chaine2 = recupUE(page)
    script = script + chaine + chaine2 + "</formation>"
    scriptFinal = script.encode('ISO-8859-15')
    return sco_formations.formation_import_xml(context,REQUEST,scriptFinal)

